package com.tangruojie;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Spring Boot 为什么可以统一容器？
 * 核心原因是：
 * Spring Boot 使用 SpringApplication.run() 启动容器
 * 默认创建的是 AnnotationConfigServletWebServerApplicationContext
 * 它继承自 WebApplicationContext，既具备 Web 功能，也具备通用 Bean 管理能力
 * 自动装配把所有常见配置全部注册好了，包括 DispatcherServlet、HandlerMapping、ViewResolver 等等
 * ✅ 所以，在 Spring Boot 中，你不再需要分两个配置文件和两个容器！
 */
@SpringBootApplication
public class Springboot09SsmApplication {

    public static void main(String[] args) {
        SpringApplication.run(Springboot09SsmApplication.class, args);
    }

}
/**
 * 开发中两种页面类型区别
 * 页面类型	    存放位置	                        是否需要控制器映射？	    适合用途
 * 静态页面	    resources/static/index.html	    ❌ 不需要	            首页、纯前端项目
 * 模板引擎页面	resources/templates/index.html	✅ 需要 controller 返回	后端动态渲染（Thymeleaf）
 * --------
 * 如果你使用的是模板引擎（如 Thymeleaf）
 * @Controller
 * public class PageController {
 *     @GetMapping("/")
 *     public String home() {
 *         return "index"; // 视图解析为 /templates/index.html
 *     }
 * }
 * --------
 * Spring Boot 中的替代机制：WebMvcAutoConfiguration
 * Spring Boot 的核心理念是 “约定优于配置”，它不需要你手动添加 @EnableWebMvc，因为它：
 * 自动配置了所有 MVC 组件
 * 自动注册了 DispatcherServlet、静态资源映射、消息转换器等
 * 📌 这些都由 org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration 类自动完成！
 * --------
 * 请求路径处理流程对比
 * 🆚 SpringMVC 请求流程（无资源映射）：
 * 浏览器请求 /index.html
 *  → DispatcherServlet 拦截
 *    → 没有对应 Controller
 *      → 报 404
 * ✅ Spring Boot 请求流程（有自动资源映射）：
 * 浏览器请求 /index.html
 *  → DispatcherServlet
 *    → 被 ResourceHttpRequestHandler 识别为静态资源
 *      → 到 /static/index.html 查找
 *        → 找到后直接返回页面
 */
